package org.algorithm.biubiu.wheel_1.数组.三月.第三周;

import java.util.Arrays;
import java.util.Comparator;

/**
 * @Date 2022/3/20 22:00
 * @Created by biubiu
 * @Link {https://leetcode-cn.com/problems/largest-number/solution/gong-shui-san-xie-noxiang-xin-ke-xue-xi-vn86e/}
 */
public class 最大数 {
    /**

     贪心解法
     对于 numsnums 中的任意两个值 aa 和 bb，我们无法直接从常规角度上确定其大小/先后关系。

     但我们可以根据「结果」来决定 aa 和 bb 的排序关系：

     如果拼接结果 abab 要比 baba 好，那么我们会认为 aa 应该放在 bb 前面。

     另外，注意我们需要处理前导零（最多保留一位）。

     */

    public String largestNumber(int[] nums) {
        String[] numStr = new String[nums.length];
        for(int i=0;i<nums.length;i++) numStr[i]= nums[i]+"";
        Arrays.sort(numStr,(a,b)->{
            String ab = a+b,ba=b+a;
            return ba.compareTo(ab);
        });
        StringBuilder sb = new StringBuilder();
        for(String ele:numStr) sb.append(ele);
        int k = 0;
        while(k<sb.length()-1 && sb.charAt(k)=='0') k++;
        return sb.substring(k);

    }


}
